21k words
1. 缓冲流昨天学习了基本的一些流,作为 IO 流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。 1.1 概述缓冲流,也叫高效流,是对 4 个基本的FileXxx 流的增强,所以也是 4 个流,按照数据类型分类: 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,BufferedWriter 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统 IO 次数,从而提高读写的效率。 1.2 字节缓冲流构造方法 public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。 public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。 构造举例,代码如下:...
18k words
1. IO 概述1.1 什么是 IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个 U 盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。 我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。 Java 中 I/O 操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。 1.2 IO 的分类根据数据的流向分为:输入流和输出流。 输入流 :把数据从其他设备上读取到内存中的流。 输出流 :把数据从内存 中写出到其他设备上的流。 格局数据的类型分为:字节流和字符流。 字节流 :以字节为单位,读写数据的流。 字符流 :以字符为单位,读写数据的流。 1.3 IO 的流向说明图解 1.4 顶级父类们 输入流 输出流 字节流 字节输入流InputStream 字节输出流OutputStre...
17k words
1. 异常1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致 JVM 的非正常停止。 在 Java 等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java 处理异常的方式是中断处理。 异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行. 1.2 异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Error与java.lang.Exception,平常所说的异常指java.lang.Exception。 Throwable 体系: Error:严重错误 Error,无法通过处理的错误,只能事先避免,好比绝症。 Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。 Throwable 中的...
15k words
1. 可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化. 格式: 1修饰符 返回值类型 方法名(参数类型... 形参名){ } 底层: ​ 其实就是一个数组 好处: ​ 在传递数据的时候,省的我们自己创建数组并添加元素了,JDK 底层帮我们自动创建数组并添加元素了 代码演示: 1234567891011121314 public class ChangeArgs { public static void main(String[] args) { int sum = getSum(6, 7, 2, 12, 2121); System.out.println(sum); } public static int getSum(int... arr) { int sum = 0; for (int a : arr) { sum += a; } ...
19k words
1.不可变集合1.1 什么是不可变集合​ 是一个长度不可变,内容也无法修改的集合 1.2 使用场景​ 如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。 ​ 当集合对象被不可信的库调用时,不可变形式是安全的。 简单理解: ​ 不想让别人修改集合中的内容 比如说: 1,斗地主的 54 张牌,是不能添加,不能删除,不能修改的 2,斗地主的打牌规则:单张,对子,三张,顺子等,也是不能修改的 3,用代码获取的操作系统硬件信息,也是不能被修改的 1.3 不可变集合分类 不可变的 list 集合 不可变的 set 集合 不可变的 map 集合 1.4 不可变的 list 集合123456789101112131415161718192021222324252627282930313233343536373839404142public class ImmutableDemo1 { public static void main(String[] args) { /* 创建不可变的List集合 ...
7.3k words
1.Map 集合1.1Map 集合概述和特点【理解】 Map 集合概述 1interface Map<K,V> K:键的类型;V:值的类型 Map 集合的特点 双列集合,一个键对应一个值 键不可以重复,值可以重复 Map 集合的基本使用 123456789101112131415public class MapDemo01 { public static void main(String[] args) { //创建集合对象 Map<String,String> map = new HashMap<String,String>(); //V put(K key, V value) 将指定的值与该映射中的指定键相关联 map.put("itheima001","林青霞"); map.put("itheima002","张曼玉"); map.put(&...
8k words
1.泛型1.1 泛型概述 泛型的介绍 ​ 泛型是 JDK5 中引入的特性,它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: <类型 1,类型 2…>: 指定多种类型的格式,多种类型之间用逗号隔开.例如: <E,T> <K,V> 2.Set 集合2.1Set 集合概述和特点【应用】 不可以存储重复元素 没有索引,不能使用普通 for 循环遍历 2.2Set 集合的使用【应用】存储字符串并遍历 1234567891011121314151617181920212223242526public class MySet1 { public static void main(String[] args) { //创建集合对象 Set<String> set = new TreeSet<>(); ...
9.4k words
1.Collection 集合1.1 数组和集合的区别【理解】 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2 集合类体系结构【理解】 1.3Collection 集合概述和使用【应用】 Collection 集合概述 是单例集合的顶层接口,它表示一组对象,这些对象也称为 Collection 的元素 JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如 Set 和 List)实现 创建 Collection 集合的对象 多态的方式 具体的实现类 ArrayList Collection 集合常用方法 方法名 说明 boolean add(E e) 添加元素 boolean remove(Object o) 从集合中移除指定的元素 boolean removeIf(Object o) 根据条件进行移除 void clear() 清空集合中的元素 boolean conta...
13k words
常见的七种查找算法:​ 数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词,如果各位铁粉有疑惑,可以先看一下哥们后面录制的数据结构,再回头看算法。 1. 基本查找​ 也叫做顺序查找 ​ 说明:顺序查找适合于存储结构为数组或者链表。 基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表示查找失败。 示例代码: 1234567891011121314151617181920212223242526272829303132public class A01_BasicSearchDemo1 { public static void main(String[] args) { //基本查找/顺序查找 //核心: //从0索引开始挨个往后查找 //需求:定义一个方法利用基本查找,查询某个元素是否存在 ...
26k words
今日内容 JDK7 时间相关类 JDK8 时间相关类 包装类 综合练习 Collection 集合 教学目标 能够使用日期类输出当前日期 能够使用将日期格式化为字符串的方法 能够使用将字符串转换成日期的方法 能够说出 8 种基本类型对应的包装类名称 能够说出自动装箱、自动拆箱的概念 能够将字符串转换为对应的基本类型 能够将基本类型转换为对应的字符串 能够完成课题上讲解的所有练习 第一章 Date 类1.1 Date 概述java.util.Date`类 表示特定的瞬间,精确到毫秒。 继续查阅 Date 类的描述,发现 Date 拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数 public Date():从运行程序的此时此刻到时间原点经历的毫秒值,转换成 Date 对象,分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 public Date(long date):将指定参数的毫秒值 date,转换成 Date 对象,分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 197...